package com.xinzhilibrary.controller;

import com.xinzhilibrary.model.Result;
import com.xinzhilibrary.model.UserInfo;
import com.xinzhilibrary.service.CheckUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin
public class CheckUserController {
    @Autowired
    private CheckUserInfoService CheckUserInfoServiceImpl;

    /**
     * 检查用户名接口
     * @param userName //用户名
     * @param token  //token
     * @return //返回结果
     */
    @PostMapping("/checkUserName")//查找用户名接口 admin专属
    public Result insertUser(String userName, @RequestHeader("Authorization") String token) {
        return CheckUserInfoServiceImpl.checkUserName(userName, token);
    }

    /**
     * 用户登录接口
     * @param userName //用户名
     * @param userPassword //密码
     * @return //返回结果
     */
    @PostMapping("/login")//用户登录接口 所有用户共享
    public Result login(String userName, String userPassword) {
        return CheckUserInfoServiceImpl.userLogin(userName, userPassword);
    }

    /**
     * 查询所有用户接口
     * @param token //token
     * @return //返回结果
     */
    @GetMapping("/selectAllUser")//查询所有用户接口 admin专属
    public Result selectAllUser(@RequestHeader("Authorization") String token) {
        return CheckUserInfoServiceImpl.selectAllUser(token);
    }

    /**
     *  注册用户接口
     * @param userInfo //用户信息
     * @param token //token
     * @return //返回结果
     */
    @PostMapping("/userRegister")//注册用户接口 admin专属
    public Result userRegister(@RequestBody UserInfo userInfo, @RequestHeader("Authorization") String token) {
        return CheckUserInfoServiceImpl.userRegister(userInfo, token);
    }

    /**
     *  充值用户余额接口
     * @param money //充值金额
     * @param userName//用户名
     * @return //返回结果
     */
    @PostMapping("/addUserMoney")
    public Result addUserMoney(double money, String userName, @RequestHeader("Authorization") String token){
        return CheckUserInfoServiceImpl.addUserMoney(money, userName , token);
    }

    /**
     *  修改用户信息接口
     * @param userInfo //用户信息
     * @param token //token
     * @return //返回结果
     */
    @PostMapping("/updateUserInfo")
    public Result updateUserInfo(UserInfo userInfo, @RequestHeader("Authorization") String token){
        return CheckUserInfoServiceImpl.updateUserInfo(userInfo, token);
    }
}
